﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test_22_01_17
{
    class Program
    {
        static void Main(string[] args)
        {
            // TenAdding();
            // SumOfNumbers();
            // DistanceBetweenPoints();
            // DetectQuarter();
              DrawBorder(5, 5, '*');
            // GenerateArray(5);
            // EvenOddCount();
            // MinMaxCount();
        }
        //  1) Пользователь вводит целое число из консоли.Увеличить число на 10 и вывести на экран.
        static void TenAdding()


        {

            Console.WriteLine("Enter number");
            int number = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Number is: {0}", number);
            number += 10;
            Console.WriteLine("Number plus ten is : {0}", number);

        }

        //2) Найти сумму ряда чисел от 1 до n.n - целое положительное число вводиться
        //    пользователем в консоли.Если n - не удовлетворяет условию - вывести сообщение об ошибке.

        static void SumOfNumbers()
        {

            Console.WriteLine("Enter number");
            int number = Int32.Parse(Console.ReadLine());
            if (number > 0)
            {
                int sum = 0;
                for (int i = 1; i <= number; i++)
                {
                    sum += i;


                }
                Console.WriteLine("Sum is : {0}", sum);

            }
            else
                Console.WriteLine("Enter positive number");


        }
        //  3) Пользователь из консоли вводит координаты x и y двух точек.Найти расстояние по прямой между этими точками.

        static void DistanceBetweenPoints()
        {

            Console.WriteLine("Enter coords of 2 point");

            double coordX1 = Double.Parse(Console.ReadLine());
            double coordX2 = Double.Parse(Console.ReadLine());
            double coordY1 = Double.Parse(Console.ReadLine());
            double coordY2 = Double.Parse(Console.ReadLine());

            double distX = coordX2 - coordX1;
            double distY = coordY2 - coordY1;
            double kvGip = (distX * distX) + (distY * distY);

            double distance = Math.Sqrt(kvGip);


            Console.WriteLine("Distance is : {0:f2}", distance);

        }
        //4) Пользователь из консоли вводит координаты x и y точки.Определить какой
        //    четверти принадлежит точка.Обработать результат когда точка имеет координаты 0.0
        static void DetectQuarter()
        {

            Console.WriteLine("Enter coords of  point");

            int coordX = Int32.Parse(Console.ReadLine());
            int coordY = Int32.Parse(Console.ReadLine());


            if (coordX > 0 & coordY > 0)
            {
                Console.WriteLine("Point in the 1 quarter");

            }
            else if (coordX < 0 & coordY > 0)
            {
                Console.WriteLine("Point in the 2 quarter");
            }
            else if (coordX < 0 & coordY < 0)
            {
                Console.WriteLine("Point in the 3 quarter");
            }
            else if (coordX > 0 & coordY < 0)
            {
                Console.WriteLine("Point in the 4 quarter");
            }
            else
            {
                Console.WriteLine("Point in on the axis");
            }

        }
        //5) Нарисовать рамку в консоли.Высота, Ширина и символ 
        //    для отображения границ рамки являются входящими параметрами в метод

    
        public static void DrawBorder(int height, int width, char ch)
        {

            for (int i = 0; i < height; i++)
            {
               Console.WriteLine();
                for (int j = 0; j < width; j++)
                {
                    if ((i > 0 && i < height - 1) && (j > 0 && j < width - 1))
                    {
                        Console.Write(" ");
                    }
                    else
                    {
                        Console.Write(ch);
                    }
                }
            }
            Console.WriteLine();
        }
        //6) Реализовать метод который создает и возвращает одномерный массив целочисленных значений и заполняет 
        //    его случайными числами в диапазоне от 1 до 100. Размер массива указывается во входящем параметре метода.

        public static int[] GenerateArray(int size)
        {
            int[] array = new int[size];
            Random rnd = new Random();
            for (int i = 0; i < size; i++)
            {
            
                array[i] = rnd.Next(1, 3);
                Console.WriteLine("[{0}]: {1}", i, array[i]);
            }
             return array;

        }
        //7) Вывести элементы массива на экран.Посчитать количество четных и нечетных элементов.Для создания 
        //    массива воспользоваться методом из предыдущего задания.Размер массива 5
        public static void EvenOddCount ()
        {
            int[] myArray= GenerateArray(5);
            int even = 0;
            int odd = 0;
            foreach (int i in myArray)
            {
                if (i % 2 == 0)
                {
                    even++;
                }
                else
                {
                    odd++;
                }
            }
            Console.WriteLine("Even elements  {0} ,  odd elements  {1} ", even, odd);

        }
        //8) Вывести массив на экран, найти позицию первого вхождения минимального и максимального элемента, а та
        //    к же общее кол-во вхождени й минимального и максимального элементов в массив
        public static void MinMaxCount()
        {
            int[] myArray = GenerateArray(8);
              int min = Int32.MaxValue;
              int max = Int32.MinValue;
            int minCount = 0;
            int maxCount = 0;


            foreach (int i in myArray)
            {
                if (i <min)
                {
                    min=i;
                }
              
            }
            foreach (int i in myArray)
            {
                if (i > max)
                {
                    max = i;
                }

            }
            Console.WriteLine("Min element  {0} ,   max elements  {1} ", min, max);
            Console.WriteLine("First Min element position is {0}", Array.IndexOf(myArray, min));
            Console.WriteLine("First Max element position is {0}", Array.IndexOf(myArray, max));
            foreach (int i in myArray)
            {
                if (i == min)
                {
                    minCount++;
                }
                if (i == max)
                {
                    maxCount++;
                }

            }
            Console.WriteLine("Ammount of min elements  is {0}", minCount);
            Console.WriteLine("Ammount of max elements  is {0}", maxCount);

        }

    }

}

 

